<?php

namespace Agp\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use APY\DataGridBundle\Grid\Mapping as GRID;

/**
 * Agp\CoreBundle\Entity\HabilitaProdutoTerminal
 *
 * @ORM\Table(name="habilita_produto_terminal") 
 * @ORM\Entity(repositoryClass="Agp\CoreBundle\Repository\HabilitaProdutoTerminalRepository")
 * @GRID\Source(columns="codHabilitaProdutoTerminal, evento.info.descricao, listaPreco.nome, produto.nome, vlrProduto, situacao")
 * @GRID\Source(groups="habilitaPassaporteEvento", groupBy={"listaPreco.codListaPreco"}, columns="codHabilitaProdutoTerminal, listaPreco.codListaPreco, listaPreco.nome, listaPreco.eventoProdutoList.vlrProduto:sum, situacao")
 */
class HabilitaProdutoTerminal
{
    /**
     * @var integer $codHabilitaProdutoTerminal
     *
     * @ORM\Column(name="cod_habilita_produto_terminal", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     * 
     * @GRID\Column(title="Código", visible=false, type="text", size="5", primary=true)
     */
    protected $codHabilitaProdutoTerminal;
    
    /**
     * @var object $produtoListaPreco
     * 
     * @ORM\ManyToOne(targetEntity="Produto", fetch="LAZY")
     * @ORM\JoinColumn(name="cod_produto", referencedColumnName="cod_produto", onDelete="Cascade", nullable=true)
     * 
     * @GRID\Column(field="produto.nome", title="Produto", type="text")
     * @GRID\Column(field="produto.qtdeAtual", title="Quantidade", type="text", align="center")
     */
    protected $produto;
    
    /**
     * @var object $listaPreco
     * 
     * @ORM\ManyToOne(targetEntity="ListaPreco", fetch="LAZY")
     * @ORM\JoinColumn(name="cod_lista_preco", referencedColumnName="cod_lista_preco", onDelete="Cascade", nullable=false)
     * 
     * @GRID\Column(field="listaPreco.codListaPreco", title="Lista", type="text", visible=false)
     * @GRID\Column(field="listaPreco.nome", title="Lista", type="text")
     * @Grid\Column(field="listaPreco.eventoProdutoList.vlrProduto:sum", title="Valor", type="number", style="currency")
     */
    protected $listaPreco;
    
    /**
     * @var object $terminalEmpresa
     *
     * @ORM\ManyToOne(targetEntity="TerminalEmpresa", fetch="LAZY", inversedBy="habilitaProdutoTerminalList")
     * @ORM\JoinColumn(name="cod_terminal_empresa", referencedColumnName="cod_terminal_empresa", onDelete="Cascade", nullable=false)
     */
    protected $terminalEmpresa;

    /**
     * @var object $evento
     *
     * @ORM\ManyToOne(targetEntity="Evento", fetch="LAZY")
     * @ORM\JoinColumn(name="cod_evento", referencedColumnName="cod_evento", nullable=true, onDelete="Cascade", nullable=true)
     *
     * @GRID\Column(field="evento.info.descricao", title="Evento", type="text")
     */
    protected $evento;
    
    /**
     * @var object $layout
     *
     * @ORM\ManyToOne(targetEntity="Layout", fetch="LAZY")
     * @ORM\JoinColumn(name="cod_layout", referencedColumnName="cod_layout", nullable=true, onDelete="Cascade", nullable=true)
     */
    protected $layout;
    
    /**
     * @var object $atendente
     *
     * @ORM\ManyToOne(targetEntity="Atendente", fetch="LAZY")
     * @ORM\JoinColumn(name="cod_atendente", referencedColumnName="cod_atendente", onDelete="Cascade", nullable=true)
     */
    protected $atendente;
    
    const SIT_ATIVO = 'Ativo';
    const SIT_INATIVO = 'Inativo';
    
    /**
     * @var string $situacao
     *
     * @ORM\Column(name="situacao", type="string", nullable=false)
     * 
     * @GRID\Column(title="Situação", type="text", align="center", filter="select", selectFrom="source")
     */
    protected $situacao;
    
    /**
     * @ORM\Column(name="ordem", type="integer", nullable=false)
     * @var type integer
     * @GRID\Column(title="Ordem", visible="false", type="text")
     */
    protected $ordem;
    
    /**
     * @var float $vlrProduto
     *
     * @ORM\Column(name="vlr_produto", type="float", nullable=true)
     * 
     * @GRID\Column(title="Valor", type="number", style="currency")
     * 
     */
    protected $vlrProduto;

    /**
     * @var integer $limiteVendas
     *
     * @ORM\Column(name="limite_vendas", type="integer", nullable=true)
     * 
     * @GRID\Column(title="Limite", type="text", align="center")
     * 
     */
    protected $limiteVendas;
    
    /**
     * @var string $situacao
     *
     * @ORM\Column(name="tipo", type="string", nullable=false)
     */
    protected $tipo;
    const TP_BAR = 'Bar';
    const TP_EVENTO = 'Evento';
    
    /**
     * @var object $empresa
     *
     * @ORM\ManyToOne(targetEntity="Empresa", fetch="LAZY")
     * @ORM\JoinColumn(name="cod_empresa", referencedColumnName="cod_empresa", onDelete="Cascade", nullable=true)
     */
    protected $empresa;

    public function __construct() {
        $this->situacao = self::SIT_ATIVO;
        $this->tipo = self::TP_BAR;
    }
    
    public function isAtivo(){
        if($this->situacao == self::SIT_ATIVO){
           return true;
        }else{
           $this->situacao == self::SIT_INATIVO;
           return false;
        }
    }
    
    /* hack for Acls */
    public function getId(){
        return 'class';
    }

    public function getCodHabilitaProdutoTerminal(){
        return $this->codHabilitaProdutoTerminal;
    }

    /**
     * Set terminalEmpresa
     *
     * @param integer $terminalEmpresa
     * @return HabilitaProdutoTerminal
     */
    public function setTerminalEmpresa($terminalEmpresa)
    {
        $this->terminalEmpresa = $terminalEmpresa;
    
        return $this;
    }

    /**
     * Get terminalEmpresa
     *
     * @return integer 
     */
    public function getTerminalEmpresa()
    {
        return $this->terminalEmpresa;
    }
    
    public function getProduto() {
        return $this->produto;
    }

    public function setProduto($produto) {
        $this->produto = $produto;
    }

    public function getListaPreco() {
        return $this->listaPreco;
    }

    public function setListaPreco($listaPreco) {
        $this->listaPreco = $listaPreco;
    }
   
    /**
     * Set evento
     *
     * @param integer $evento
     * @return HabilitaProdutoTerminal
     */
    public function setEvento($evento)
    {
        $this->evento = $evento;
    
        return $this;
    }

    /**
     * Get evento
     *
     * @return integer 
     */
    public function getEvento()
    {
        return $this->evento;
    }
    
     /**
     * Set situacao
     *
     * @param string $situacao
     * @return TerminalEmpresa
     */
    public function setSituacao($situacao)
    {
        $this->situacao = $situacao;
    
        return $this;
    }

    /**
     * Get situacao
     *
     * @return string 
     */
    public function getSituacao()
    {
        return $this->situacao;
    }
    
    public function getOrdem() {
        return $this->ordem;
    }

    public function setOrdem($ordem) {
        $this->ordem = $ordem;
    }
    
    public function getLayout() {
        return $this->layout;
    }

    public function setLayout($layout) {
        $this->layout = $layout;
    }
    
    public function getVlrProduto() {
        return $this->vlrProduto;
    }

    public function setVlrProduto($vlrProduto) {
        $this->vlrProduto = $vlrProduto;
    }

    public function getLimiteVendas() {
        return $this->limiteVendas;
    }

    public function setLimiteVendas($limiteVendas) {
        $this->limiteVendas = $limiteVendas;
    }
    
    public function getAtendente() {
        return $this->atendente;
    }

    public function setAtendente($atendente) {
        $this->atendente = $atendente;
    }

    public function getTipo() {
        return $this->tipo;
    }

    public function setTipo($tipo) {
        $this->tipo = $tipo;
    }
    
    public function getEmpresa() {
        return $this->empresa;
    }

    public function setEmpresa($empresa) {
        $this->empresa = $empresa;
    }



}